CXX := g++
CXXFLAGS := -std=c++20 -Wall -Wextra -O2 -g
LDFLAGS := 

SRCS := lexer.cpp parser.cpp semantic.cpp codegen.cpp ToyC.cpp
OBJS := $(SRCS:.cpp=.o)
TARGET := ToyC

.PHONY: all clean

all: $(TARGET)

$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) $^ -o $@ $(LDFLAGS)

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -f $(OBJS) $(TARGET)